package AccionBoton;

import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.List;

import javax.swing.JComboBox;

import modelUtil.Util;
import paginas.PaginaEntornoCreacionTeclados;
import plantilla.BotonTO;
import plantilla.PlantillaTO;
import util.PopUpBorradoCeldas;

public class AccionSeleccionCeldasTeclado implements ItemListener {

	private String _dimension;
	private JComboBox _desplegable;
	private PaginaEntornoCreacionTeclados _frame;
	private PlantillaTO _teclado;

	public AccionSeleccionCeldasTeclado(String dimension,
			JComboBox desplegable, PaginaEntornoCreacionTeclados frame) {

		_dimension = dimension;
		_desplegable = desplegable;
		_frame = frame;
		_teclado = _frame.getTecladoTO();

	}

	public void itemStateChanged(ItemEvent evt) {

		if (evt.getStateChange() == ItemEvent.SELECTED) {

			if (_dimension.equals("filas")) {

				List<BotonTO> listaBotones = _teclado.getListaBotones();
				BotonTO salir = listaBotones.get(listaBotones.size() - 1);
				int indice = -1;
				for(int i =0; i<listaBotones.size(); i++){
					if(listaBotones.get(i).getNombreBoton().equals("salir"))
					{
						
						indice = i;
					}
				}
				if(indice!=-1)
				{	salir = listaBotones.get(indice);}

				int cols = new Integer(_teclado.getNumeroColumnas()).intValue();
				int filas = new Integer(_teclado.getNumeroFilas()).intValue();

				int nuevasFilas = new Integer(evt.getItem().toString()).intValue();
				int difFilas = nuevasFilas - filas;

				if (difFilas > 0) {

					if (salir.getNombreBoton().equals("salir")) {

						listaBotones.remove(indice);
						BotonTO b1 = Util.botonTeclado(filas - 1, cols - 1);
						listaBotones.add(b1);

					}

					int k = (cols * filas + 1);
					for (int i = filas; i < nuevasFilas; i++) {

						for (int j = 0; j < cols; j++) {
							if (k != cols * nuevasFilas) {
								BotonTO b1 = Util.botonTeclado(i, j);
								k++;
								listaBotones.add(b1);
							}
						}
					}

					BotonTO b2 = Util.botonSalir(nuevasFilas - 1, cols - 1);
					listaBotones.add(b2);
					_teclado.setNumeroFilas(_desplegable.getSelectedItem().toString());
					_teclado.setListaBotones(listaBotones);
					_frame.setTecladoTO(_teclado);
					_frame.setGuardado(false);

				} else {

					if (difFilas < 0) {
						
						new PopUpBorradoCeldas("filas",new Integer(nuevasFilas).toString(), _frame);
					}

				}

			} else {

				if (_dimension.equals("columnas")) {

					int nuevasCols = new Integer(evt.getItem().toString())
							.intValue();

					List<BotonTO> listaBotones = _teclado.getListaBotones();
					BotonTO salir = listaBotones.get(listaBotones.size() - 1);
					int cols = new Integer(_teclado.getNumeroColumnas()).intValue();
					int filas = new Integer(_teclado.getNumeroFilas()).intValue();
					int difCols = nuevasCols - cols;
					if (difCols > 0) {
						if (salir.getNombreBoton().equals("salir")) {

							listaBotones.remove(listaBotones.size() - 1);
							BotonTO b1 = Util.botonTeclado(filas - 1, cols - 1);
							listaBotones.add(b1);

						}

						int k = (cols * filas + 1);
						for (int i = 0; i < filas; i++) {

							for (int j = cols; j < nuevasCols; j++) {
								if (k != filas * nuevasCols) {
									BotonTO b1 = Util.botonTeclado(i, j);
									k++;
									listaBotones.add(b1);
								}

							}

						}

						BotonTO b2 = Util.botonSalir(filas - 1, nuevasCols - 1);
						listaBotones.add(b2);
						_teclado.setNumeroColumnas(_desplegable
								.getSelectedItem().toString());
						_teclado.setListaBotones(listaBotones);
						_frame.setTecladoTO(_teclado);
						_frame.setGuardado(false);
					} else {
						if (difCols < 0) {
							new PopUpBorradoCeldas("columnas", new Integer(
									nuevasCols).toString(), _frame);
						}

					}

				}

			}

		}
	}
}
